package com.xiaomai.geek.ui.module.articel; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.NestedScrollView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.webkit.DownloadListener; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.xiaomai.geek.R; import com.xiaomai.geek.ui.base.BaseLoadActivity; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by XiaoMai on 2017/5/16. */ public class BaseWebViewActivity extends BaseLoadActivity { public static final String EXTRA_URL = "extra_url"; @BindView(R.id.tool_bar) Toolbar toolBar; @BindView(R.id.webView) WebView webView; @BindView(R.id.nestedScrollView) NestedScrollView nestedScrollView; public static void launch(Context context, String url) { Intent intent = new Intent(context, BaseWebViewActivity.class); intent.putExtra(EXTRA_URL, url); context.startActivity(intent); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_article_detail); ButterKnife.bind(this); initViews(); initWebViewSettings(); initWebViewClient(); } protected void initViews() { Intent intent = getIntent(); String url = intent.getStringExtra(EXTRA_URL); toolBar.setTitle(url); setSupportActionBar(toolBar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); webView.loadUrl(url); } protected void initWebViewClient() { WebViewClient webViewClient = new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); showLoading(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); dismissLoading(); } }; // 如果用户设置了WebViewClient,则在点击新的链接以后就不会跳转到系统浏览器了,而是在本WebView中显示。 webView.setWebViewClient(webViewClient); } @SuppressLint("SetJavaScriptEnabled") protected void initWebViewSettings() { WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // WebView中含有可以下载文件的链接,点击该链接后,应该开始执行下载的操作并保存文件到本地中。 webView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); if (webView.canGoBack()) webView.goBack(); else finish(); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } }